#ifndef _INPUT_MANAGER_H
#define _INPUT_MANAGER_H

#ifndef NULL
#define NULL (void *)0
#endif

#include <sys/time.h>


#define INPUT_TYPE_TOUCH 1
#define INPUT_TYPE_NET   2

//抽象出一个输入数据的结构体，支持触摸屏点击和网络设备输入
typedef struct InputEvent {
	struct timeval tTime;
	int iType;
	int iX;
	int iY;
	int iPressure;
	char str[1024];
}InputEvent, *pInputEvent;

typedef struct InputDevice {
	char *name;
	int (*GetInputEvent)(pInputEvent ptInputEvent);
	int (*DeviceInit)(void);
	int (*DeviceExit)(void);
	struct InputDevice *ptNext;
}InputDevice, *pInputDevice;

//用来让底层设备注册自己的结构体到链表中
void RegisterInputDevice(pInputDevice ptInputDevice);

//注册Touchscreen触摸屏设备，将结构体加入链表中
void RegisterTsDev(void);
//注册网络输入设备，将结构体加入链表中
void RegisterNetinputDev(void);


/*  提供给上层
 *	注册所有输入设备，即进行上面的三个操作
 */
void InputSystemRegister(void);

/* 提供给上层
 *	初始化设备
 * 进行底层的初始化、为每个设备创建线程
 */
void InputDeviceInit(void);

int GetInputEvent(pInputEvent ptInputEvent);



#endif
